/**
 public final void join()throws interruptedException
 等待这个线程死亡。
 调用此方法得到行为方式与调用完全相同
 join（0）
 异常InterruptedException-如果任何线程终端当前线程。当抛出此异常时，当前线程的中断状态将被清除
 public void interrrupt（）
 中断这个线程。
 除非当前线程中断自身，这是始终允许的
 public static boolean interrupted（）
 测试当前线程是否中断。该方法可以清除线程的中断状态。换句话说，如果这个放啊被连续调用两次，那么第二个调用
 将返回false（除非当前线程再次中断，再第一个调用已经清除其中断状态之后，在第二个调用之前已经检查过）。
 忽略线程中断。因为线程在中断时不存在将被该方法返回false所反映。
 自定义标记中断线程。
 */
/*
package 第十章_多线程与并发;

import static java.lang.Thread.sleep;

public class U10_L4_join与中断线程 {
    public static void main(String [] args){
        //Runnable ir=new Ithread();


        //第二种方式来控制线程的关闭
        Ithread2 i2=new Ithread2();
        Thread irt =new Thread(i2);
        irt.start();
        main_run(i2);


    }
    //join 就是把2个线程合并成1个
    public static void main_run(Ithread2 i2){

        for(int i=0;i<50;i++) {
            System.out.println(Thread.currentThread().getName()+"-main-"+i);
            try {
                sleep(100);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
            if(i==20) {
              //  try {
              //      irt.join();
              //  } catch (InterruptedException e) {
              //      throw new RuntimeException(e);
              //  }

                i2.flag=false;


            }
        }
    }
}
//使用thread的.isInterrupted 不是很好用
//class Ithread implements Runnable{
//    public void run(){
//        for(int i=0;i<50;i++) {
//            if(Thread.currentThread().isInterrupted()){
//                break;
//            //返回boolean值 ，
//            }
//            System.out.println(Thread.currentThread().getName()+"-thread2-"+i);
//            try {
//                sleep(300);
//            } catch (InterruptedException e) {
//                throw new RuntimeException(e);
//            }
//        }
//    }
//}

// 自定义添加flag 来控制线程的关闭
class Ithread2 implements Runnable{
    public boolean flag;
    public Ithread2(){
        flag=true;
    }
    public void run() {

            for (int i = 0; i < 50; i++) {
                while(flag) {
                System.out.println("flag"+flag+i);
                System.out.println(Thread.currentThread().getName() + "-thread2-" + i);
                try {
                    sleep(100);
                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                }
                }
            }

    }

}
*/
